import java.util.*;//导入多个类时可用 * 代替 当用到那个类时便会导入那个类(并不会直接将这个包中的所有类都导入)
//import java.util;//报错 不能导入这这整个包

import TestPackage.*;

public class Test {
    //封装：将数据和操作数据的方法进行有机结合, 隐藏对象的属性和实现细节,仅对外公开接口来和对象进行交互
    //面向对象程序设计语言中的封装是一种重要的特性，用于将数据和方法组合成一个单独的单元，使其对外部不可见和不可访问。
    //这种封装性可以保护数据的安全性、可靠性和一致性，从而提高程序的可维护性和可复用性。同时，封装也可以隐藏实现细节，
    //降低模块之间的耦合度，使程序更加灵活和易于扩展。因此，封装是面向对象程序设计语言中非常重要的一种特性。

    //在java中通过 package(软件包 包) 将多个类组织在一起 他对应一个文件夹
    //自定义的包中的每一个类都需要 在第一个有效行 书写 package 包名
    //src 是默认包 在这个文件下的类不需要用 package
    //在java要用一个包中的一个类就需要提供这个类所在的包 并通过 import 导入 到当前文件中

    //访问修饰限定符(可用于修饰 类属性 类方法)：
    //public(公开权限) private(私有权限) default(不存在这个权限修饰符 包访问权限) protected(受保护权限)
    //public 几乎在哪儿都能访问
    //private 只能在当前类的内部访问
    //当我们没有提供权限修饰符时就是 包访问权限(默认权限) 他只能在同一个包内访问

    public static void main(String[] args) {
        //当要用到的一个类在我们已导入的多个包中时我们需要明确指定这个类在那个包中
        //Date date=new Date(); //报错
        java.util.Date date = new java.util.Date();
        System.out.println(date.getTime());//1683444215946
        java.sql.Date date2=new java.sql.Date(20203L);

        //访问public 类 Person
        Person p1 = new Person();
        //p1.name="老王";//报错 因为name 是 private权限
        //p1.age=10;//报错 因为age 是 private权限

        //正确做法
        p1.setName("老王");
        p1.setAge(10);
        p1.show();//姓名：老王 年龄：10

        //访问 包权限 类 OtherClass
        /*OtherClass oc1 = new OtherClass();
        oc1.otherString = "otherString";
        oc1.otherInt = 666;
        oc1.show();*/
        //包权限 的 OtherClass 类本身以及属性与方法均无法访问

        //Student sut2=new Student();//报错 实例不了 Student 因为他的构造方法是 private
    }
}
